package com.hopu.controller;

import com.github.pagehelper.PageInfo;
import com.hopu.dto.MyEmpDto;
import com.hopu.entity.MyEmp;
import com.hopu.service.MyEmp.MyEmpService;
import com.hopu.util.HouseResult;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

/**
 * @Package: com.hopu.controller
 * @ClassName: MyEmpController
 * @Author: xiaoBao
 * @CreateTime: 2020/10/27 3:36
 * @Description: 【员工信息功能表现层】：实现登录验证、员工信息查询、添加、删除、修改功能
 */
@Controller("myEmpController")	/**定义表现层；*/
public class MyEmpController {
	@Resource(name = "myEmpServiceImple")    /**引入Service业务层*/
	private MyEmpService myEmpService;


	/**
	 * findAllEmpPageData 【查询所有的员工信息数据】
	 * @param current 当前页；
	 * @param eflag 员工是否离职信息（0为在职 1为离职）；
	 * @return 将分页后员工信息返回给前台Ajax进行显示。
	 */
	@RequestMapping("emp/findAllEmpPageData.do")
	@ResponseBody
	public HouseResult<PageInfo<MyEmpDto>> findAllEmpPageData(int current, int eflag){
		return myEmpService.findAllEmpPageData(current, eflag);
	}


	/**
	 * findEmpAcccount 【查询员工账号是否已存在】
	 * @param myEmp 员工账号；
	 * @return 将查询结果返回给前台。
	 */
	@RequestMapping("emp/findEmpAcccount.do")
	@ResponseBody
	public HouseResult<MyEmp> findEmpAcccount(MyEmp myEmp){
		return myEmpService.findEmpAcccount(myEmp);
	}


	/**
	 * addEmp 【添加一条员工信息】
	 * @param myEmp 员工角色、部门Id和姓名、账号、电话、地址等添加员工相关信息；
	 * @return 将添加操作的执行结果返回给前台。
	 */
	@RequestMapping("emp/addEmp.do")
	@ResponseBody
	public HouseResult<Object> addEmp(MyEmp myEmp){
		return myEmpService.addEmp(myEmp);
	}


	/**
	 * findEmpById 【根据Id查询一条员工信息。（当用户在员工信息页面点击“修改”时，实现修改弹窗数据回显）】
	 * @param myEmp 员工Id；
	 * @return 将查询到的员工信息返回给前台进行数据回显。
	 */
	@RequestMapping("emp/findEmpById.do")
	@ResponseBody
	public HouseResult<MyEmp> findEmpById(MyEmp myEmp){
		return myEmpService.findEmpById(myEmp);
	}


	/**
	 * uppEmpById 【根据Id修改一条员工信息】
	 * @param myEmp 员工、部门、角色Id和员工账号、密码、电话等员工信息；
	 * @return 将执行的结果返回给前台判断是否修改成功。
	 */
	@RequestMapping("emp/uppEmpById.do")
	@ResponseBody
	public HouseResult<Object> uppEmpById(MyEmp myEmp){
		return myEmpService.uppEmpById(myEmp);
	}


	/**
	 * delEmpById 【根据Id删除（撤销：软删除）一条员工信息】
	 * @param myEmp 员工Id；
	 * @return 将执行结果返回给前台判断是否删除成功。
	 */
	@RequestMapping("emp/delEmpById.do")
	@ResponseBody
	public HouseResult<Object> delEmpById(MyEmp myEmp){
		return myEmpService.delEmpById(myEmp);
	}


	/**
	 * restoreEmp 【根据Id恢复一条已删除的员工信息】
	 * @param myEmp 员工Id
	 * @return 将执行结果返回给前台判断是否恢复成功。
	 */
	@RequestMapping("emp/restoreEmp.do")
	@ResponseBody
	public HouseResult<Object> restoreEmp(MyEmp myEmp){
		return myEmpService.restoreEmp(myEmp);
	}
}
